home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / cggrqf.z / cggrqf
Text File  |  1996-03-14  |  6KB  |  199 lines

  1.  
  2.  
  3.  
  4. CCCCGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))                                                          CCCCGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      CGGRQF - compute a generalized RQ factorization of an M-by-N matrix A and
  10.      a P-by-N matrix B
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE CGGRQF( M, P, N, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO
  14.                         )
  15.  
  16.          INTEGER        INFO, LDA, LDB, LWORK, M, N, P
  17.  
  18.          COMPLEX        A( LDA, * ), B( LDB, * ), TAUA( * ), TAUB( * ), WORK(
  19.                         * )
  20.  
  21. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  22.      CGGRQF computes a generalized RQ factorization of an M-by-N matrix A and
  23.      a P-by-N matrix B:
  24.  
  25.                  A = R*Q,        B = Z*T*Q,
  26.  
  27.      where Q is an N-by-N unitary matrix, Z is a P-by-P unitary matrix, and R
  28.      and T assume one of the forms:
  29.  
  30.      if M <= N,  R = ( 0  R12 ) M,   or if M > N,  R = ( R11 ) M-N,
  31.                       N-M  M                           ( R21 ) N
  32.                                                           N
  33.  
  34.      where R12 or R21 is upper triangular, and
  35.  
  36.      if P >= N,  T = ( T11 ) N  ,   or if P < N,  T = ( T11  T12 ) P,
  37.                      (  0  ) P-N                         P   N-P
  38.                         N
  39.  
  40.      where T11 is upper triangular.
  41.  
  42.      In particular, if B is square and nonsingular, the GRQ factorization of A
  43.      and B implicitly gives the RQ factorization of A*inv(B):
  44.  
  45.                   A*inv(B) = (R*inv(T))*Z'
  46.  
  47.      where inv(B) denotes the inverse of the matrix B, and Z' denotes the
  48.      conjugate transpose of the matrix Z.
  49.  
  50.  
  51. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  52.      M       (input) INTEGER
  53.              The number of rows of the matrix A.  M >= 0.
  54.  
  55.      P       (input) INTEGER
  56.              The number of rows of the matrix B.  P >= 0.
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. CCCCGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))                                                          CCCCGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))
  71.  
  72.  
  73.  
  74.      N       (input) INTEGER
  75.              The number of columns of the matrices A and B. N >= 0.
  76.  
  77.      A       (input/output) COMPLEX array, dimension (LDA,N)
  78.              On entry, the M-by-N matrix A.  On exit, if M <= N, the upper
  79.              triangle of the subarray A(1:M,N-M+1:N) contains the M-by-M upper
  80.              triangular matrix R; if M > N, the elements on and above the (M-
  81.              N)-th subdiagonal contain the M-by-N upper trapezoidal matrix R;
  82.              the remaining elements, with the array TAUA, represent the
  83.              unitary matrix Q as a product of elementary reflectors (see
  84.              Further Details).
  85.  
  86.      LDA     (input) INTEGER
  87.              The leading dimension of the array A. LDA >= max(1,M).
  88.  
  89.      TAUA    (output) COMPLEX array, dimension (min(M,N))
  90.              The scalar factors of the elementary reflectors which represent
  91.              the unitary matrix Q (see Further Details).  B
  92.              (input/output) COMPLEX array, dimension (LDB,N) On entry, the P-
  93.              by-N matrix B.  On exit, the elements on and above the diagonal
  94.              of the array contain the min(P,N)-by-N upper trapezoidal matrix T
  95.              (T is upper triangular if P >= N); the elements below the
  96.              diagonal, with the array TAUB, represent the unitary matrix Z as
  97.              a product of elementary reflectors (see Further Details).  LDB
  98.              (input) INTEGER The leading dimension of the array B. LDB >=
  99.              max(1,P).
  100.  
  101.      TAUB    (output) COMPLEX array, dimension (min(P,N))
  102.              The scalar factors of the elementary reflectors which represent
  103.              the unitary matrix Z (see Further Details).  WORK
  104.              (workspace/output) COMPLEX array, dimension (LWORK) On exit, if
  105.              INFO = 0, WORK(1) returns the optimal LWORK.
  106.  
  107.      LWORK   (input) INTEGER
  108.              The dimension of the array WORK. LWORK >= max(1,N,M,P).  For
  109.              optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), where
  110.              NB1 is the optimal blocksize for the RQ factorization of an M-
  111.              by-N matrix, NB2 is the optimal blocksize for the QR
  112.              factorization of a P-by-N matrix, and NB3 is the optimal
  113.              blocksize for a call of CUNMRQ.
  114.  
  115.      INFO    (output) INTEGER
  116.              = 0:  successful exit
  117.              < 0:  if INFO=-i, the i-th argument had an illegal value.
  118.  
  119. FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
  120.      The matrix Q is represented as a product of elementary reflectors
  121.  
  122.         Q = H(1) H(2) . . . H(k), where k = min(m,n).
  123.  
  124.      Each H(i) has the form
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. CCCCGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))                                                          CCCCGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))
  137.  
  138.  
  139.  
  140.         H(i) = I - taua * v * v'
  141.  
  142.      where taua is a complex scalar, and v is a complex vector with v(n-
  143.      k+i+1:n) = 0 and v(n-k+i) = 1; v(1:n-k+i-1) is stored on exit in A(m-
  144.      k+i,1:n-k+i-1), and taua in TAUA(i).
  145.      To form Q explicitly, use LAPACK subroutine CUNGRQ.
  146.      To use Q to update another matrix, use LAPACK subroutine CUNMRQ.
  147.  
  148.      The matrix Z is represented as a product of elementary reflectors
  149.  
  150.         Z = H(1) H(2) . . . H(k), where k = min(p,n).
  151.  
  152.      Each H(i) has the form
  153.  
  154.         H(i) = I - taub * v * v'
  155.  
  156.      where taub is a complex scalar, and v is a complex vector with v(1:i-1) =
  157.      0 and v(i) = 1; v(i+1:p) is stored on exit in B(i+1:p,i), and taub in
  158.      TAUB(i).
  159.      To form Z explicitly, use LAPACK subroutine CUNGQR.
  160.      To use Z to update another matrix, use LAPACK subroutine CUNMQR.
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.